import request from '@/utils/request/index'

// api地址
const api = {
  // 书架分类相关接口
  getCategoryList: 'app-api/bookShelfCategory/getBookShelf',
  getCategoryListByType: 'app-api/bookShelfCategory/all',
  addCategory: 'app-api/bookShelfCategory/add',
  updateCategory: 'app-api/bookShelfCategory/update',
  deleteCategory: 'app-api/bookShelfCategory/delete',
  joinCategoryRecycleBin: 'app-api/bookShelfCategory/joinRecycleBin',
  // 绘本管理相关接口
  addBookShelf: 'app-api/bookShelf/add',
  updateBookShelf: 'app-api/bookShelf/update',
  deleteBookShelf: 'app-api/bookShelf/delete',
  updateBookShelfRecycleBin: 'app-api/bookShelf/updateBookShelfRecycleBin',
  updateBookShelfCollect: 'app-api/bookShelf/updateBookShelfIsCollect',
  clearBookReadingHistory: 'app-api/bookRecord/clearBookReadingHistory'
}

/**
 * 根据分类查询绘本
 * @param {Object} param - 查询参数
 * @param {string} param.type - 书架类型（必填）1：英文书架 2：中文书架
 * @param {string} param.recycleBin - 是否加入回收站（必填）true是 false否
 * @param {string} [param.categoryName] - 分类名称（可选）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: [{
 *     id: number,
 *     catalogueName: string,           // 目录名称
 *     type: number,                    // 1：英文书架 2：中文书架
 *     categoryName: string,            // 分类名称
 *     bookShelfSaveRespVOList: [{
 *       id: number,
 *       title: string,                 // 绘本名称
 *       catalogueId: number,           // 目录ID
 *       quantity: number,              // 绘本下书籍总数量
 *       createName: string,            // 创建者名称
 *       creator: string
 *     }]
 *   }],
 *   msg: string
 * }
 */
export const getCategoryList = (param) => {
  return request.get(api.getCategoryList, param)
}

export const clearBookReadingHistory = () =>{
	return request.get(api.clearBookReadingHistory)
}

/**
 * 根据type查询中英文目录
 * @param {string} type - 类型（1：英文书架 2：中文书架）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const getCategoryListByType = (type) => {
  return request.get(`${api.getCategoryListByType}/${type}`)
}

/**
 * 根据type创建中英文目录
 * @param {Object} data - 请求数据
 * @param {string} data.catalogueName - 目录名称（必填）
 * @param {number} data.type - 类型（1:英文书架 2:中文书架）（必填）
 * @param {string} data.categoryName - 分类名称（可选）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const addCategory = (data) => {
  return request.post(api.addCategory, data)
}

/**
 * 根据type修改中英文目录
 * @param {Object} data - 请求数据
 * @param {number} data.id - 目录ID（必填）
 * @param {string} data.catalogueName - 目录名称（必填）
 * @param {number} data.type - 类型（1:英文书架 2:中文书架）（必填）
 * @param {string} data.categoryName - 分类名称（可选）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const updateCategory = (data) => {
  return request.put(api.updateCategory, data)
}

/**
 * 删除目录
 * @param {string|number} id - 目录ID
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const deleteCategory = (id) => {
  return request.delete(`${api.deleteCategory}/${id}`)
}

/**
 * 目录加入或还原回收站
 * @param {string|number} id - 目录ID
 * @param {boolean} recycleBin - 回收站状态（true：加入，false：还原）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const joinCategoryRecycleBin = (id, recycleBin) => {
  return request.delete(`${api.joinCategoryRecycleBin}/${id}`, { params: { recycleBin } })
}

/**
 * 创建绘本
 * @param {Object} data - 绘本数据
 * @param {string} data.title - 绘本名称（必填）
 * @param {number} data.catalogueId - 目录ID（必填）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const addBookShelf = (data) => {
  return request.post(api.addBookShelf, data)
}

/**
 * 修改绘本
 * @param {Object} data - 绘本数据
 * @param {number} data.id - 绘本ID（必填）
 * @param {string} data.title - 绘本名称（必填）
 * @param {number} data.catalogueId - 目录ID（必填）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const updateBookShelf = (data) => {
  return request.put(api.updateBookShelf, data)
}

/**
 * 删除绘本
 * @param {string|number} id - 绘本ID
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const deleteBookShelf = (id) => {
  return request.delete(`${api.deleteBookShelf}/${id}`)
}

/**
 * 绘本加入或还原回收站
 * @param {string|number} id - 绘本ID
 * @param {boolean} recycleBin - 回收站状态（true：加入，false：还原）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const updateBookShelfRecycleBin = (id, recycleBin) => {
  return request.delete(`${api.updateBookShelfRecycleBin}/${id}?recycleBin=${recycleBin}`)
}

/**
 * 绘本加入收藏或取消收藏
 * @param {string|number} id - 绘本ID
 * @param {boolean} isCollect - 收藏状态（true：收藏，false：取消收藏）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const updateBookShelfCollect = (id, isCollect) => {
  return request.put(`${api.updateBookShelfCollect}/${id}`, null, { params: { isCollect } })
}
